package com.qfedu.vhr.controller.sys;

import com.alibaba.excel.EasyExcel;
import com.qfedu.vhr.common.RespBean;
import com.qfedu.vhr.common.RespPageBean;
import com.qfedu.vhr.system.entity.Joblevel;
import com.qfedu.vhr.system.service.IJoblevelService;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * @author baize
 * @date 2023/1/10
 * @site www.qfedu.com
 */
@RestController
@RequestMapping("/system/basic/joblevel")
public class JobLevelController {

    @Autowired
    IJoblevelService joblevelService;

    @GetMapping("/")
    public RespPageBean getAllJobLevelsByPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size) {
        return joblevelService.getAllJobLeveIsByPage(page, size);
    }

    @GetMapping("/export")
    public void exportJobLevel(HttpServletResponse resp) throws IOException {
        List<Joblevel> list = joblevelService.list();
        resp.setHeader("content-disposition", "attachment;filename=" + new String("职称数据.xlsx".getBytes("UTF-8"), "ISO-8859-1"));
        EasyExcel.write(resp.getOutputStream(), Joblevel.class).sheet("职称数据").doWrite(list);
    }

    @PostMapping("/import")
    public RespBean importJobLevel(MultipartFile file) {
        return joblevelService.importJobLevel(file);
    }

    /**
     * 添加joblevel数据
     *
     * @param joblevel
     * @return
     */
    @PostMapping("/")
    public RespBean addJobLevel(@RequestBody Joblevel joblevel) {
        String name = joblevel.getName();
        if (name == null || "".equals(name)) {
            return RespBean.error("名字为null或者名字为空字符串，添加失败");
        }
        return joblevelService.addJoblevel(joblevel);
    }

    /**
     * 删除一条joblevel数据
     *
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public RespBean deleteJoblevel(@PathVariable Integer id) {
        return joblevelService.removeById(id) ? RespBean.ok("删除成功") : RespBean.error("删除失败,请检查该用户是否真实有效");
    }

    /**
     * 根据id去查询信息
     *
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Joblevel getJoblevelById(@PathVariable Integer id) {
        return joblevelService.getById(id);
    }

    /**
     * 更新数据
     *
     * @param joblevel
     * @return
     */
    @PutMapping("/")
    public RespBean updateJoblevel(@RequestBody Joblevel joblevel) {
        return joblevelService.updateJoblevel(joblevel);
    }
}
